package com.okoj.excel_lib_rary.data;

import com.google.gson.JsonObject;
import com.okoj.excel_lib_rary.data.entity.Kind;
import com.okoj.excel_lib_rary.data.entity.RemoteFile;
import com.okoj.excel_lib_rary.data.entity.Result;
import com.okoj.excel_lib_rary.data.entity.Template;
import com.okoj.excel_lib_rary.data.entity.WpsCommon;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface WpsService {


    /**
     * 新增空白模板
     * @param token
     * @param appId
     * @param env
     * @param fileType
     * @param platform
     */
    @POST("file/new_module_file")
    Observable<JsonObject> newFile(@Header("x-wps-weboffice-token") String token,
                                   @Query("_w_app_id") String appId,
                                   @Query("_w_env")int env,
                                   @Query("file_type")String fileType,
                                   @Query("_w_platform")int platform,
                                   @Query("name")String name);

    /**
     * 获取用户服务端文件列表
     * @param token
     * @param appId
     * @param env
     * @param platform
     * @return
     */

    @GET("file/list")
    Observable<Result<List<RemoteFile>>> getUserFileList(@Header("x-wps-weboffice-token") String token,
                                             @Query("_w_app_id") String appId,
                                             @Query("_w_env")int env,
                                             @Query("_w_platform")int platform);


    /**
     * 上传
     * @param token
     * @param requestBody
     * @return
     */
    @POST("file/upload")
    Observable<JsonObject> upload(@Header("x-wps-weboffice-token")String token,
                                  @Body RequestBody requestBody);

    /**
     * 获取文件预览地址
     * @param token
     * @return
     */
    @GET("file/preview_url")
    Observable<JsonObject> preview(@Header("x-wps-weboffice-token")String token,
                                   @Header("x-weboffice-file-id")String fileId,
                                   @Query("_w_app_id") String appId,
                                   @Query("_w_env")int env,
                                   @Query("file_type")String fileType,
                                   @Query("_w_platform")int platform);



    /**
     * 删除指定文件id文件
     * @param token
     * @return
     */
    @DELETE("file/delete")
    Observable<JsonObject> delete(@Header("x-wps-weboffice-token")String token,
                                   @Header("x-weboffice-file-id")String fileId,
                                   @Query("_w_app_id") String appId,
                                   @Query("_w_env")int env,
                                   @Query("_w_platform")int platform);
    /**
     *  获取指定文件id最新版本
     */

    @GET("file/getNewFile")
    Observable<Result<RemoteFile>>  getNewFile(@Header("x-wps-weboffice-token")String token,
                                               @Query("file_id") String fileId,
                                               @Query("_w_app_id") String appId,
                                               @Query("_w_env")int env,
                                               @Query("_w_platform")int platform);

    /**
     * 返回模板分类
     */
    @GET("module/all_kinds")
    Observable<Result<List<Kind>>> getAllKinds(@Query("app_id")String appid);


    /**
     * 获取指定分类id下的子元素
     */
    @GET("module/kind/{kind}")
    Observable<Result<Template>> getAllTemplateByKind( @Path("kind") String kind,@Query("app_id") String appId);

    /**
     * 预览指定模板
     */
    @GET("file/viewPublicModule")
    Observable<Result<WpsCommon>> previewTemplate(@Header("x-wps-weboffice-token")String token,
                                          @Query("_w_app_id") String appId,
                                          @Query("_w_env")int env,
                                          @Query("_w_platform")int platform,
                                          @Query("module_id")String templateId,
                                          @Query("file_type") String fileType);


    /**
     *
     * 编辑指定模板
     */
    @GET("file/editPublicModule")
    Observable<Result<WpsCommon>> editPublicModule(
                                                    @Header("x-wps-weboffice-token")String token,
                                                    @Header("x-weboffice-file-id")String fileId,
                                                   @Query("_w_app_id") String appId,
                                                   @Query("_w_env")int env,
                                                   @Query("_w_platform")int platform,
                                                   @Query("file_type") String fileType);


}
